import { gp } from '@vui'
import cloneDeep from 'lodash/cloneDeep'
import { translateTitle } from '@/utils/i18n'
//必须带done回调 执行完成调用
export default function getTablecolumnData({ vm, action, done, eventName }) {
  let tableId = action.extension.tableId.value && action.extension.tableId.value[0]
  const getDataField = action.extension.getDataField.value

  if (tableId) {
    let _tableSelf = vm.vuiComponents[tableId].self
    let _valueList = cloneDeep(_tableSelf.info.data.requestData.data)
    let columnData = {}
    getDataField.forEach((filedItem) => {
      _valueList.forEach((dataItem) => {
        if (columnData[filedItem.key]) {
          // 如果有值 则代表为非第一次存值 则需要拼接值
          if (filedItem.joinType === 'join') {
            columnData[filedItem.key] = columnData[filedItem.key] + ',' + dataItem[filedItem.key]
          } else if (filedItem.joinType === 'add') {
            if (Number(dataItem[filedItem.key])) {
              columnData[filedItem.key] = columnData[filedItem.key] + Number(dataItem[filedItem.key])
            }
          }
        } else {
          // 第一次存值则直接添加缓存值
          if (filedItem.joinType === 'add') {
            if (Number(dataItem[filedItem.key])) {
              columnData[filedItem.key] = Number(dataItem[filedItem.key])
            }
          } else {
            columnData[filedItem.key] = dataItem[filedItem.key]
          }
        }
      })
    })
    // 存储动作数据
    vm.$store.dispatch('actionDatas/setActionsData', {
      moduleId: vm.info._id,
      actionId: action._id,
      actionData: columnData,
    })
    done(null, columnData)
  } else {
    gp.$baseMessage(translateTitle('Ve.eventTask.获取列数据'), 'warning')
    // 修改任务队列执行状态，防止下一次事件被拦截
    vm[`${eventName}IsRunning`] = false
    done(null, {})
  }
}
